package com.love.marriage.eventRegistrationInfo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.love.marriage.common.vo.BaseVo;
import com.love.marriage.config.Long2StringSerializer;
import com.love.marriage.eventInfo.vo.EventInfoVo;
import com.love.marriage.identityVerification.vo.IdentityVerificationVo;
import com.love.marriage.userInfo.vo.UserInfoVo;
import com.love.marriage.userProfileInfo.vo.UserProfileInfoVo;
import com.love.marriage.userPartnerPreferences.vo.UserPartnerPreferencesVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * description:  活动报名表Vo
 * author:       alex
 * createDate:   2024-10-15 04:29:12
 * version:      1.0.0
 */
@Getter
@Setter
@Accessors(chain = true)
@Schema(name = "EventRegistrationInfoVo", description = "活动报名表Vo")
public class EventRegistrationInfoVo extends BaseVo<EventRegistrationInfoVo>{

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "活动ID，关联到活动表", type = "Long", implementation = Long.class)
    private Long eventId;

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "报名用户ID", type = "Long", implementation = Long.class)
    private Long userId;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    @Schema(description = "报名时间(yyyy-MM-dd HH:mm:ss)", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime registrationTime;

    @Schema(description = "支付状态（0: 未支付, 1: 已支付）", type = "Boolean", implementation = Boolean.class)
    private Boolean paymentStatus;

    @Schema(description = "支付金额，用户报名时实际支付的金额", type = "BigDecimal", implementation = BigDecimal.class)
    private BigDecimal paymentAmount;

    @Schema(description = "活动信息", type = "EventInfoVo", implementation = EventInfoVo.class)
    private EventInfoVo eventInfoVo;

    @Schema(description = "用户信息", type = "UserInfoVo", implementation = UserInfoVo.class)
    private UserInfoVo userInfoVo;

    @Schema(description = "报名人信息", type = "UserProfileInfoVo", implementation = UserProfileInfoVo.class)
    private UserProfileInfoVo userProfileInfoVo;

    @Schema(description = "认证信息", type = "IdentityVerificationVo", implementation = IdentityVerificationVo.class)
    private IdentityVerificationVo identityVerificationVo;

    @Schema(description = "用户择偶要求", type = "UserPartnerPreferencesVo", implementation = UserPartnerPreferencesVo.class)
    private UserPartnerPreferencesVo userPartnerPreferencesVo;

    @Schema(description = "报名时间从", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime registrationTimeFrom;

    @Schema(description = "报名时间到", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime registrationTimeTo;
}
